package cradleofrome;

/**
 *
 * @author Alex
 */
public class Spelobjecten {

    protected Spelveld veld;
    protected Positie mijnPositie;
    protected boolean beweegBaar;

    public Spelveld getVeld() {
        return veld;
    }

    /**
     * Constructor voor de Spelobjecten
     * @param kleur de Kleur van het object
     */
    public Spelobjecten(Positie mijnPositie, boolean beweegBaar){

        this.mijnPositie = mijnPositie;
        this.beweegBaar = beweegBaar;
    }

    /**
     * Methode op de Spelobject naar een nieuwe positie te bewegen
     * @param richting de richting waar de object heen moet bewegen
     * @return true als het bewegen gelukt is en anders false
     */
    public boolean move(String richting){

            boolean gelukt = false;

             if(mijnPositie.getBuur(richting) != null && ((mijnPositie.getBuur(richting)).getSpelobject()) == null){

                    mijnPositie.removeSpelobject();
                    mijnPositie = mijnPositie.getBuur(richting);
                    mijnPositie.setSpelobject(this);
                    gelukt = true;
                }
            else if(mijnPositie.getBuur(richting) != null && (mijnPositie.getBuur(richting)).getSpelobject() != null && ((mijnPositie.getBuur(richting)).getSpelobject()).isBeweegBaar() == true){

                if(mijnPositie.getBuur(richting).getSpelobject().move(richting) == true){
                    
                mijnPositie.removeSpelobject();
                mijnPositie = mijnPositie.getBuur(richting);
                mijnPositie.setSpelobject(this);
                
                gelukt = true;
                }
                    
            }
            return gelukt;
        }

        /**
         * De positie van de Spelobject ophalen
         * @return de positie waar de spelobject zich bevindt
         */
        public Positie getPositie(){

          return mijnPositie;
        }

        /**
         * De positie van de Spelobject setten
         * @param mijnPositie de positie waar de Spelobject geplaats wordt
         */
        public void setPositie(Positie mijnPositie){

            this.mijnPositie = mijnPositie;
        }

        /**
         * Geeft terug of een Spelobject kan bewegen of niet
         * @return true als het kan bewegen en anders false
         */
        public boolean isBeweegBaar(){

            return beweegBaar;
        }
        
        /**
         * Geeft de kleur van een Spelobject terug
         * @return de kleur in String
         */
}